1e5aad26d54d45f3678e3ff345d804dbf57f536a,src/main/java/com/wingman/client/classloader/transformers/mapping/RSMemberInjector.java,RSMemberInjector,transformFields,#ClassNode#,130
Before Change
MethodNode getter = new MethodNode(
Opcodes.ASM5,
Opcodes.ACC_PUBLIC | (f.isStatic ? Opcodes.ACC_STATIC : 0),
"get" + cleanName + (f.isStatic ? "_F__STATIC_WINGMANCLIENT" : ""),
getterType.toString(),
null,
new String[]{});
InsnList insnList = getter.instructions;
if (!f.isStatic) {
MappingsHelper.addInstructions(insnList,
new VarInsnNode(Opcodes.ALOAD, 0)
);
}
MappingsHelper.addInstructions(insnList,
new FieldInsnNode(
(f.isStatic ? Opcodes.GETSTATIC : Opcodes.GETFIELD),
f.owner,
f.name,
obfType.toString())
);
if (needsCast) {
MappingsHelper.addInstructions(insnList,
new TypeInsnNode(Opcodes.CHECKCAST, deobfType.getInternalName())
);
}
if (f.multiplier != 1) {
MappingsHelper.addInstructions(insnList,
new LdcInsnNode(f.multiplier),
new InsnNode(Opcodes.IMUL)
);
}
MappingsHelper.addInstructions(insnList,
new InsnNode(deobfType.getOpcode(Opcodes.IRETURN))
);
clazz.methods.add(getter);
}
{
Type setterType = Type.getMethodType(Type.VOID_TYPE, deobfType);
MethodNode setter = new MethodNode(
Opcodes.ASM5,
Opcodes.ACC_PUBLIC | (f.isStatic ? Opcodes.ACC_STATIC : 0),
"set" + cleanName + (f.isStatic ? "_F__STATIC_WINGMANCLIENT" : ""),
setterType.toString(),
null,
new String[]{});
InsnList insnList = setter.instructions;
int index = 0;
if (!f.isStatic) {
MappingsHelper.addInstructions(insnList,
new VarInsnNode(Opcodes.ALOAD, index++)
);
}
MappingsHelper.addInstructions(insnList,
new VarInsnNode(deobfType.getOpcode(Opcodes.ILOAD), index)
);
if (needsCast) {
MappingsHelper.addInstructions(insnList,
new TypeInsnNode(Opcodes.CHECKCAST, obfType.getInternalName())
);
}
try {
if (f.multiplier != 1) {
MappingsHelper.addInstructions(insnList,
new LdcInsnNode(MappingsHelper.getMMI(f.multiplier)),
new InsnNode(Opcodes.IMUL)
);
}
MappingsHelper.addInstructions(insnList,
new FieldInsnNode((f.isStatic ? Opcodes.PUTSTATIC : Opcodes.PUTFIELD), f.owner, f.name, obfType.toString()),
new InsnNode(Opcodes.RETURN)
);
After Change
}
for (FieldInfo f : fields) {
if (f.isStatic) {
continue;
}
Type obfType = Type.getType(f.obfType);
Type deobfType = Type.getType(f.deobfType);
boolean needsCast = !f.obfType.equals(f.deobfType);
String cleanName = MappingsHelper.upperCaseify(f.cleanName);
{
Type getterType = Type.getMethodType(deobfType);
MethodNode getter = new MethodNode(
Opcodes.ASM5,
Opcodes.ACC_PUBLIC,
"get" + cleanName,
getterType.toString(),
null,
new String[]{});
InsnList insnList = getter.instructions;
MappingsHelper.addInstructions(insnList,
new VarInsnNode(Opcodes.ALOAD, 0)
);
MappingsHelper.addInstructions(insnList,
new FieldInsnNode(
Opcodes.GETFIELD,
f.owner,
f.name,
obfType.toString())
);
if (needsCast) {
MappingsHelper.addInstructions(insnList,
new TypeInsnNode(Opcodes.CHECKCAST, deobfType.getInternalName())
);
}
if (f.multiplier != 1) {
MappingsHelper.addInstructions(insnList,
new LdcInsnNode(f.multiplier),
new InsnNode(Opcodes.IMUL)
);
}
MappingsHelper.addInstructions(insnList,
new InsnNode(deobfType.getOpcode(Opcodes.IRETURN))
);
clazz.methods.add(getter);
}
{
Type setterType = Type.getMethodType(Type.VOID_TYPE, deobfType);
MethodNode setter = new MethodNode(
Opcodes.ASM5,
Opcodes.ACC_PUBLIC,
"set" + cleanName,
setterType.toString(),
null,
new String[]{});
InsnList insnList = setter.instructions;
int index = 0;
MappingsHelper.addInstructions(insnList,
new VarInsnNode(Opcodes.ALOAD, index++)
);
MappingsHelper.addInstructions(insnList,
new VarInsnNode(deobfType.getOpcode(Opcodes.ILOAD), index)
);
if (needsCast) {
MappingsHelper.addInstructions(insnList,
new TypeInsnNode(Opcodes.CHECKCAST, obfType.getInternalName())
);
}
try {
if (f.multiplier != 1) {
MappingsHelper.addInstructions(insnList,
new LdcInsnNode(MappingsHelper.getMMI(f.multiplier)),
new InsnNode(Opcodes.IMUL)
);
}
MappingsHelper.addInstructions(insnList,
new FieldInsnNode(Opcodes.PUTFIELD, f.owner, f.name, obfType.toString()),
new InsnNode(Opcodes.RETURN)
);